export function transTreeData(list, currentId = '') {
  // 最终要产出的数组
  const treeList = []
  // 属性处理逻辑
  // 1.以数组中每一项的id作为key，以每一项自身作为value形成对象结构
  const map = {}
  list.forEach(item => {
    // 形成对象里对应的 key：value
    map[item.id] = item
    // 给每一项一个children属性
    if (!item.children) {
      item.children = []
    }
  })
  // 2.以数组每一项中的pid去和map对象的key做匹配，如果匹配上就把当前数组添加到children属性中
  // 如果数组中的pid为null或空 则表示当前数组项就是一个最根上的节点不需要找自己的父节点
  list.forEach(item => {
    if (item.pid === currentId) {
      // 当前没有父节点
      treeList.push(item)
    } else {
      // 有父节点
      // 这里的 map[item.pid] 实际上就是map对象中 key：value 中的 key
      map[item.pid] && map[item.pid].children.push(item)
    }
  })
  // 借助了js中引用类型的储存特性 只需要遍历一遍 每一个节点找到自己的父节点之后 遍历完毕 属性解构也跟着一起生成
  return treeList
}
